#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
文档格式转换命令行工具
用法:
    python convert_files.py -i 输入文件或文件夹 -o 输出文件或文件夹 -f 输出格式 [--input-format 输入格式] [--template]
"""

import os
import sys
import argparse
from pandoc_converter import convert_file, convert_folder, SUPPORTED_INPUT_FORMATS, SUPPORTED_OUTPUT_FORMATS, PDF_FORMAT

def main():
    parser = argparse.ArgumentParser(description="文档格式转换工具")
    parser.add_argument("--input", "-i", required=True, help="输入文件或文件夹路径")
    parser.add_argument("--output", "-o", required=True, help="输出文件或文件夹路径")
    parser.add_argument("--format", "-f", required=True, help="输出格式")
    parser.add_argument("--input-format", help="输入格式（仅在转换文件夹时使用）")
    parser.add_argument("--template", action="store_true", help="使用模板（用于DOCX输出）")
    parser.add_argument("--list-formats", action="store_true", help="列出所有支持的格式")
    
    args = parser.parse_args()
    
    # 列出支持的格式
    if args.list_formats:
        print("支持的输入格式:")
        for fmt in sorted(SUPPORTED_INPUT_FORMATS + [PDF_FORMAT]):
            print(f"  - {fmt}")
        
        print("\n支持的输出格式:")
        for fmt in sorted(SUPPORTED_OUTPUT_FORMATS):
            print(f"  - {fmt}")
        return
    
    # 检查输出格式是否支持
    if args.format.lower() not in SUPPORTED_OUTPUT_FORMATS:
        print(f"错误: 不支持的输出格式 '{args.format}'")
        print("使用 --list-formats 查看所有支持的格式")
        return 1
    
    # 检查输入格式是否支持（如果指定了）
    if args.input_format and args.input_format.lower() not in SUPPORTED_INPUT_FORMATS + [PDF_FORMAT]:
        print(f"错误: 不支持的输入格式 '{args.input_format}'")
        print("使用 --list-formats 查看所有支持的格式")
        return 1
    
    # 检查输入路径是文件还是文件夹
    if os.path.isfile(args.input):
        # 单个文件转换
        output_dir = os.path.dirname(args.output)
        if output_dir:
            os.makedirs(output_dir, exist_ok=True)
        
        # 创建模板（如果需要）
        template_path = None
        if args.template and args.format.lower() == "docx":
            template_path = os.path.join(output_dir if output_dir else ".", "template.docx")
            from pandoc_converter import create_template_docx
            create_template_docx(template_path)
        
        success, message = convert_file(args.input, args.output, args.format, template_path)
        print(message)
        return 0 if success else 1
    
    elif os.path.isdir(args.input):
        # 文件夹转换
        results = convert_folder(args.input, args.output, args.input_format, args.format, args.template)
        
        # 打印结果
        print(f"总文件数: {len(results)}")
        print(f"成功转换: {sum(1 for r in results if r['success'])}")
        print(f"失败转换: {sum(1 for r in results if not r['success'])}")
        
        # 打印失败的转换
        failed = [r for r in results if not r["success"]]
        if failed:
            print("\n失败的转换:")
            for f in failed:
                print(f"  - {f['input_file']}: {f['message']}")
        
        return 0 if not failed else 1
    
    else:
        print(f"错误: 输入路径不存在 {args.input}")
        return 1

if __name__ == "__main__":
    sys.exit(main()) 